]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
magnifier: Update screen position on activation
authorMarco Trevisan (Treviño) <mail@3v1n0.net>
Wed, 27 Mar 2019 21:16:26 +0000 (22:16 +0100)
committerMarco Trevisan (Treviño) <mail@3v1n0.net>
Wed, 27 Mar 2019 23:38:42 +0000 (00:38 +0100)
The default ZoomRegion is created at startup and only updated if it is active
when the monitor setup changes. Thus when reactivating the magnifier after a
display change, the viewport used is still the one that been computed with the
old screen geometry values.

Move screen update code inside a function and call it both when activating
the zoom region and when the monitor changes during a zoom session.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/1120

js/ui/magnifier.js

index 546ab1d981b6db6222e0f03980e3ccb7a1c4899a..a059ee98f1ca46270f58a31041012cbb18546cc2 100644 (file)
@@ -763,6 +763,18 @@ var ZoomRegion = class ZoomRegion {
                                     this._updateFocus.bind(this));
     }
 
+    _updateScreenPosition() {
+        if (this._screenPosition == GDesktopEnums.MagnifierScreenPosition.NONE)
+            this._setViewPort({
+                x: this._viewPortX,
+                y: this._viewPortY,
+                width: this._viewPortWidth,
+                height: this._viewPortHeight
+            });
+        else
+            this.setScreenPosition(this._screenPosition);
+    }
+
     _updateFocus(caller, event) {
         let component = event.source.get_component_iface();
         if (!component || event.detail1 != 1)
@@ -808,6 +820,7 @@ var ZoomRegion = class ZoomRegion {
             this._createActors();
             if (this._isMouseOverRegion())
                 this._magnifier.hideSystemCursor();
+            this._updateScreenPosition();
             this._updateMagViewGeometry();
             this._updateCloneGeometry();
             this._updateMousePosition();
@@ -1565,14 +1578,7 @@ var ZoomRegion = class ZoomRegion {
             return;
 
         this._background.set_size(global.screen_width, global.screen_height);
-
-        if (this._screenPosition == GDesktopEnums.MagnifierScreenPosition.NONE)
-            this._setViewPort({ x: this._viewPortX,
-                                y: this._viewPortY,
-                                width: this._viewPortWidth,
-                                height: this._viewPortHeight });
-        else
-            this.setScreenPosition(this._screenPosition);
+        this._updateScreenPosition();
     }
 };